home *** CD-ROM | disk | FTP | other *** search
/ Programming in Microsoft Windows with C# / Programacion en Microsoft Windows con C#.iso / Original Code / Buttons and Labels and Scrolls (Oh, My!) / ColorTrackBar / ColorTrackBar.cs next >
Encoding:
Text File  |  2001-01-15  |  3.4 KB  |  100 lines

  1. //--------------------------------------------
  2. // ColorTrackBar.cs ⌐ 2001 by Charles Petzold
  3. //--------------------------------------------
  4. using System;
  5. using System.Drawing;
  6. using System.Windows.Forms;
  7.  
  8. class ColorTrackBar: Form
  9. {
  10.      Panel      panel;
  11.      Label[]    alabelName  = new Label[3];
  12.      Label[]    alabelValue = new Label[3];
  13.      TrackBar[] atrackbar   = new TrackBar[3];
  14.  
  15.      public static void Main()
  16.      {
  17.           Application.Run(new ColorTrackBar());
  18.      }
  19.      public ColorTrackBar()
  20.      {
  21.           Text = "Color Track Bar";
  22.  
  23.           Color[] acolor = { Color.Red, Color.Green, Color.Blue };
  24.  
  25.                // Create the panel.
  26.  
  27.           panel = new Panel();
  28.           panel.Parent = this;
  29.           panel.Location = new Point(0, 0);
  30.           panel.BackColor = Color.White;
  31.  
  32.                // Loop through the three colors.
  33.  
  34.           for (int i = 0; i < 3; i++)
  35.           {
  36.                alabelName[i] = new Label();
  37.                alabelName[i].Parent = panel;
  38.                alabelName[i].ForeColor = acolor[i];
  39.                alabelName[i].Text = "&" + acolor[i].ToKnownColor();
  40.                alabelName[i].TextAlign = ContentAlignment.MiddleCenter;
  41.  
  42.                atrackbar[i] = new TrackBar();
  43.                atrackbar[i].Parent = panel;
  44.                atrackbar[i].Orientation = Orientation.Vertical;
  45.                atrackbar[i].BackColor = acolor[i];
  46.                atrackbar[i].SmallChange = 1;
  47.                atrackbar[i].LargeChange = 16;
  48.                atrackbar[i].Minimum = 0;
  49.                atrackbar[i].Maximum = 255;
  50.                atrackbar[i].TickFrequency = 16;
  51.                atrackbar[i].ValueChanged += 
  52.                               new EventHandler(TrackBarOnValueChanged);
  53.  
  54.                alabelValue[i] = new Label();
  55.                alabelValue[i].Parent = panel;
  56.                alabelValue[i].TextAlign = ContentAlignment.MiddleCenter;
  57.           }
  58.           Color color = BackColor;
  59.           atrackbar[0].Value = color.R; // Generates ValueChanged event.
  60.           atrackbar[1].Value = color.G;
  61.           atrackbar[2].Value = color.B;
  62.  
  63.           OnResize(EventArgs.Empty);
  64.      }
  65.      protected override void OnResize(EventArgs ea)
  66.      {
  67.           base.OnResize(ea);
  68.  
  69.           int cx = ClientSize.Width;
  70.           int cy = ClientSize.Height;
  71.           int cyFont = Font.Height;
  72.  
  73.           panel.Size = new Size(cx / 2, cy);
  74.  
  75.           for (int i = 0; i < 3; i++)
  76.           {
  77.                alabelName[i].Location = new Point(i * cx / 6, cyFont / 2);
  78.                alabelName[i].Size = new Size(cx / 6, cyFont);
  79.  
  80.                atrackbar[i].Height = cy - 4 * cyFont;
  81.                atrackbar[i].Location = 
  82.                     new Point((1 + 2 * i) * cx / 12 - atrackbar[i].Width / 2,
  83.                               2 * cyFont);
  84.  
  85.                alabelValue[i].Location = new Point(i * cx / 6,
  86.                                                    cy - 3 * cyFont / 2);
  87.                alabelValue[i].Size = new Size(cx / 6, cyFont);
  88.           }
  89.      }
  90.      void TrackBarOnValueChanged(object obj, EventArgs ea)
  91.      {
  92.           for (int i = 0; i < 3; i++)
  93.                if((TrackBar) obj == atrackbar[i])
  94.                     alabelValue[i].Text = atrackbar[i].Value.ToString();
  95.  
  96.           BackColor = Color.FromArgb(atrackbar[0].Value, 
  97.                                      atrackbar[1].Value,
  98.                                      atrackbar[2].Value);
  99.      }
  100. }